返回顶部
在具有多个Die的NAND Flash设备上,每个Die通常由多个Plane组成,从而实现了Multi Plane操作。每个Plane通常有多个Block,且每个Block包含多个Page。当执行Multi Plane Interleaved操作时,你可以同时在不同Die的多个Plane上读取、编程(写入)或擦除数据,进而实现大幅度的性能提升。
实践中,Interleaved Die(Multi Plane)操作通常需要满足以下条件:
以下是一个Multi Plane Interleaved读取操作的伪代码示例,注意该代码仅为说明用途,且大多数操作需要具体设备的命令码和时序细节:
#define INTERLEAVED_READ_COMMAND 0x00 // 示例命令码,实际的取决于数据手册
void interleaved_multi_plane_read(int die1_plane_address, int die2_plane_address) {
// 对第一个Die发送Interleaved读命令
select_die(1); // 可能需要发送一个命令或设置一个片选引脚
send_nand_command(INTERLEAVED_READ_COMMAND);
send_row_address(die1_plane_address);
// 其他必要的读取命令序列步骤...
// 对第二个Die发送Interleaved读命令
select_die(2); // 选择第二个Die
send_nand_command(INTERLEAVED_READ_COMMAND);
send_row_address(die2_plane_address);
// 其他必要的读取命令序列步骤...
// 等待所有Die准备好数据
wait_for_all_dies_ready();
// 从每个Die读取数据
select_die(1);
read_data_from_nand();
select_die(2);
read_data_from_nand();
}
// 调用函数执行Interleaved Multi Plane读取操作
interleaved_multi_plane_read(die1_row_address, die2_row_address);
控制器固件或者专用的闪存驱动程序会负责管理这些复杂的操作,并为上层用户提供较为简便的接口。
由于Multi Plane和Interleaved操作可以极大提高数据处理的吞吐量和效率,它们对于数据密集型应用,例如在固态硬盘(SSD)中,尤其重要。高级Flash存储控制器会在硬件层面支持这些操作,并通过透明的方式将其提供给系统。